home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 142 / Gekkan Dennou Club - 2000.3 Vol. 142 (Japan).7z / Gekkan Dennou Club - 2000.3 Vol. 142 (Japan) (Track 1).bin / ikap / etc2 / src.lzh / pcm8call.s < prev    next >
Text File  |  2000-01-10  |  986b  |  58 lines

  1. *    pcm8call.s    PCM8.x 用関数
  2.  
  3.     .include    IOCSCALL.MAC
  4.  
  5.     .xdef    _Pcm8KeepCheck,_Pcm8Play
  6.  
  7.     .text
  8.     .even
  9.  
  10. _Pcm8KeepCheck:        * PCM8 が常駐しているか調べる
  11.             * out : d0.l = 0 常駐している
  12.             *         < 0  〃 していない
  13.  
  14.     movem.l    d1/a0-a1,-(sp)
  15.  
  16.     suba.l    a1,a1
  17.     IOCS    _B_SUPER
  18.     move.l    d0,-(sp)        **
  19.  
  20.     moveq.l    #0,d1        * d1.l = 返り値
  21.     move.l    $88.w,a0
  22.     subq.w    #8,a0
  23.     cmpi.l    #'PCM8',(a0)+
  24.     bne    1f
  25.     cmpi.b  #'/',(a0)+
  26.     beq    2f
  27. 1:    moveq.l #-1,d1
  28. 2:
  29.     move.l    (sp)+,d0        **
  30.     bmi    @f            * 既にスーパーだった
  31.     movea.l    d0,a1
  32.     IOCS    _B_SUPER
  33. @@:
  34.  
  35.     move.l    d1,d0
  36.     movem.l    (sp)+,d1/a0-a1
  37.     rts
  38.  
  39.  
  40.  
  41. *********************************************************
  42. _Pcm8Play:        * PCM を演奏する
  43.             * in  :
  44.             * Pcm8Play(int channel, int info, char *addr, int length);
  45.             * out : d0.l = 正常終了
  46.     link    a6,#0
  47.     movem.l    d1-d2/a0-a2,-(sp)
  48.  
  49.     move.l    8(a6),d0    * チャンネル番号
  50.     move.l    12(a6),d1    * 音量<<16|周波数<<8|定位
  51.     movea.l    16(a6),a1    * 再生データアドレス
  52.     move.l    20(a6),d2    * データ長
  53.     TRAP    #2
  54.  
  55.     movem.l    (sp)+,d1-d2/a0-a2
  56.     unlk    a6
  57.     rts
  58.